Technical Field
This disclosure relates to computing systems, and more particularly, to techniques for implementing a software managed ring controller for message handling within a switched fabric hierarchy.
Description of the Related Art
Computer systems may include multiple processors or nodes, each of which may include multiple processing cores. Such systems may also include various Input/Output (I/O) devices, which each processor may send data to or receive data from. For example, I/O devices may include network interface cards (NICs) or network adapters that allow the processors to communicate with other computer systems, and external peripherals such as printers. In some systems, such I/O devices may send interrupts to signal various events. For example, an I/O device may send an interrupt to signal the completion of a direct memory access (DMA) operation or another type of operation. An I/O device may send a message to inform software of an internally detected error, or of an error on an I/O link coupled to the I/O device.
System I/O architectures such as PCI Express (PCIe) have become extremely successful and adopted throughout the computer industry. Within a typical PCIe hierarchy, one node is designated as the root complex within the fabric and is responsible for resource allocation for itself and for all other fabric nodes (e.g., various switches and endpoint devices). PCIe message packets, in most systems, form a small fraction of the overall transaction layer packet (TLP) traffic. These systems are typically set up to handle large quantities of regular communication packets (e.g., standard communications in the form of posted transaction packets, non-posted transaction packets, and completion packets), but not for handling large quantities of error messages or other exception-related messages.
In many PCIe based systems, the predominant use of messages is in error reporting to the root complex, although the PCIe standard also supports messages that target an endpoint. For example, endpoints can be recipients of broadcast packets, such as Vendor-Defined Messages (VDMs), and there are no constraints on how frequently VDMs can be sent by a broadcaster in the hierarchy. Power Management Event (PME) messages are also received by endpoints, in some systems.